package com.cqhilink.iot.jobstandardmanagement.facade.service.permission;

import com.cqhilink.iot.jobstandardmanagement.facade.model.*;

import java.util.List;
import java.util.Map;

/**
 * Created by huangxueqian on 2017/1/6/006.
 * 菜单控制服务层
 */
public interface JsmMenuService {

    /**
     * @param url 查询url查询到最高层级
     */
    public Menu getFirstByUrl(String url,String employeeId) throws Exception ;

    /**
     * 获取一级菜单标识
     *
     * @param systemCode
     * @param roleMenus
     * @return
     * @throws Exception
     */
    public List<Menu> getFirstLevelMenu(String systemCode, List<RoleMenu> roleMenus, boolean isAdmin) throws Exception;

    /**
     * 获取一级菜单标识
     *
     * @param systemCode 系统编码
     * @param employeeVo 登录人信息
     * @return
     * @throws Exception
     */
    public List<Menu> getAfterLevelMenu(String systemCode, String menuId, EmployeeVo employeeVo, boolean isAdmin) throws Exception;


    /**
     * @param menu 菜单新增
     * @return 菜单新增返回结果
     * @throws Exception
     */
    public Integer menuAdd(Menu menu, Employee employee) throws Exception;


    /**
     * 菜单删除
     *
     * @param menuId
     * @return
     * @throws Exception
     */
    public Integer menuDel(String menuId) throws Exception;


    /**
     * 查询全部的菜单进行显示
     *
     * @return
     */
    public List<Menu> loadMenuAll() throws Exception;


    /**
     * 根据菜单ID查询菜单信息
     *
     * @param menuId
     * @return
     * @throws Exception
     */
    public Menu selectMenu(String menuId) throws Exception;


    /**
     * 根据条件查询菜单，角色；系统 ；
     *
     * @param selectMap 根据角色 和 是否是管理员 和
     */
    public List<Menu> selectListMenu(Map selectMap);

    /**
     * @param list
     * @Author 卢曼成
     * @Description
     * @Date 2017/2/8 18:09
     */
    int insertList(List<Menu> list);

    /**
     * @param list
     * @Author 卢曼成
     * @Description 批量修改
     * @Date 2017/2/8 17:17
     */
    int updateList(List<Menu> list);

    /**
     * @param list
     * @Author 卢曼成
     * @Description 批量逻辑删除
     * @Date 2017/2/8 17:18
     */
    int deleteList(List<Menu> list);

    /**
     * @param rolesId
     * @param isAdmin
     * @throws Exception
     */
    public List<Menu> selectMenuList(String rolesId, String menuId, boolean isAdmin) throws Exception;

    /**
     * 根据条件查询ID集合
     *
     * @param list
     * @return
     */
    List<String> selectByListId(List<Menu> list);

    /**
     * @param systemCode 系统编码，由于由五个系统合并成一个系统后，就将该字段合并了，已经废弃
     * @param employeeVo 人员基本信息
     * @return 返回菜单集合
     * @throws Exception 返回异常处理接口
     */
    List<Menu>  getAllMenuPermission(String systemCode,EmployeeVo employeeVo) throws Exception;

    /**
     * @param keyword
     * 获取菜单，如果查询全部菜单
     */
    List<Ztree> noAjaxLoadMenuZtree(String keyword) throws Exception;


    /**
     * @param menuId
     */
    List<Ztree> queryChildMenuZtree(String menuId) throws Exception ;


    /**
     * @param menuName 菜单名称
     * @param systemId 菜单SystemId
     * @return
     * @throws Exception
     */
    public Map<String,Object> authMenu(String menuName,String systemId,EmployeeVo employeeVo) throws Exception ;
}
